package br.com.simtecnologia.access.controll.handlers;

import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.com.simtecnologia.access.controll.AccessLogicRouter;
import br.com.simtecnologia.access.controll.LogicRoute;
import br.com.simtecnologia.access.controll.annotation.ControlledResource;

/**
 * Tem a função de receber todos os recursos anotados tanto
 * com @{@link Resource} ou @{@link ControlledResource} a fim de resolver
 * as rotas de redirecionamento para página de Login e de Acesso Negado, 
 * que ficarão disponíveis no {@link AccessLogicRouter}.
 * @author Tomaz Lavieri
 * @see AccessLogicRouter
 */
public interface AccessRouterResolverHandler {
	/**
	 * Método onde a classe do recurso é enviada.
	 * @param annotatedType recursos anotados com @{@link Resource} ou @{@link ControlledResource}
	 */
	void handle(Class<?> annotatedType);
	
	LogicRoute registerLogicRouteLogin(ResourceMethod method);
	
	LogicRoute registerLogicRouteDenied(ResourceMethod method);
}
